#include<iostream>
using namespace std;
#include<string.h>
#include<stdio.h>
class array
{
    private:
        int *arr;
        int size;
        int capture;
    public:
        array();
        array(int capture);
        array(const array &p);
        ~array();
        void getsize(void);
        void getcapt(void);
        void getarr(void);
        void push(int count);
        void dele(void);
        int &reach(int pos);
    
};

int main()
{
    array p;
    p.push(10);
    p.push(20);
    p.push(30);
    p.push(40);
    p.getsize();
    p.getcapt();
    p.getarr();
    p.push(50);
    p.getsize();
    p.getcapt();
    p.getarr();
    p.push(60);
    p.getsize();
    p.getcapt();
    p.getarr();
    p.dele();
    p.dele();
    p.getsize();
    p.getcapt();
    p.getarr();
    p.reach(2);
    system("pause");
    return 0;
}



        array::array()
        {
            arr=new int[capture];
            size=0;
            capture=5;
            memset(arr,0,sizeof(int)*capture);
        }
        array::array(int capture)
        {
             arr=new int[capture];
            size=0;
            this->capture=capture;
            memset(arr,0,sizeof(int)*capture);
        }
        array::array(const array &p)
        {
            size=p.size;
            capture=p.capture;
            arr=new int[capture];
            memcpy(arr,p.arr,sizeof(int)*p.size);
        }
        array::~array()
        {
            if(arr!=NULL)
            {
                delete[] arr;
                arr=NULL;
            }
        }
        void array::getsize(void)
        {
            cout<<"size is "<<size<<endl;
        }
        void array::getcapt(void)
        {
             cout<<"capture is "<<capture<<endl;
        }
        void array::getarr(void)
        {
            for(uint8_t i=0;i<size;i++)
            {
                cout<<arr[i]<<" ";
            }
            cout<<endl;
        }
        void array::push(int count)
        {
            if(capture==size)
            {
                int *temp=new int[2*capture];
                memset(temp,0,2*capture*sizeof(int));
                memcpy(temp,arr,sizeof(int)*size);
                delete[] arr;
                arr=temp;
                capture=2*capture;
            }
            arr[size]=count;
            size++;
        }
        void array::dele(void)
        {
            if(size==0)
            {
                cout<<"数组里没有数"<<endl;
            }
            else
            {
                size--;
                arr[size]=0;
            }
        }

        int &array::reach(int pos)
        {
            if(pos<0||pos>size)
            {
                cout<<"查找位置错误"<<endl;
            }
            else
            {
                cout<<arr[pos-1]<<endl;
            }
            exit(-1);
        }
